1
Dari Prompt ke Pipeline: Tinjauan tentang Orkestrasi LangChain
AI010Lesson 6
00:00

Dari Prompt ke Pipeline

Evolusi Interaksi LLM

Pada pelajaran sebelumnya, kita fokus pada interaksi satu-prompt. Namun, aplikasi dunia nyata membutuhkan lebih dari sekadar pertanyaan dan jawaban tunggal. Untuk membangun sistem AI yang dapat diskalakan, kita harus beralih ke Orkestrasi. Ini melibatkan menghubungkan beberapa panggilan LLM bersama-sama, membuat logika cabang berdasarkan masukan pengguna, serta memungkinkan model berinteraksi dengan data eksternal.

Blok Pembangun Orkestrasi

  • LLMChain: Satuan dasar. Ini menggabungkan Templat Prompt dengan Model Bahasa.
  • Rantai Berurutan: Ini memungkinkan Anda membuat alur kerja multi-langkah di mana hasil dari satu langkah menjadi masukan untuk langkah berikutnya.
  • Rantai Router: Ini berperan sebagai "pengatur lalu lintas," menggunakan LLM untuk menentukan rantai bawah khusus mana yang harus menangani permintaan tertentu (misalnya, mengirim soal matematika ke "Rantai Matematika" dan soal sejarah ke "Rantai Sejarah").

Prinsip Inti: Aturan Rantai

Rantai memungkinkan berbagai komponenโ€”model, prompt, dan memoriโ€”digabung menjadi satu aplikasi yang koheren. Modularitas ini memastikan tugas kompleks dapat dipecah menjadi langkah-langkah yang dapat dikelola dan didebug.

Pro-Tip: Debugging Pipeline
Ketika pipeline Anda menjadi kompleks, gunakan langchain.debug = True. Ini memberikan "penglihatan X-ray" yang memungkinkan Anda melihat prompt pasti yang dikirim dan output mentah yang diterima di latar belakang setiap tahap rantai.
sequential_chain.py
TERMINALbash โ€” 80x24
> Ready. Click "Run" to execute.
>
Question 1
In LangChain, what is the primary difference between a SimpleSequentialChain and a standard SequentialChain?
SimpleSequentialChain supports multiple input variables, while SequentialChain does not.
SimpleSequentialChain only supports a single input and single output flowing between steps.
Only SequentialChain can be used with ChatOpenAI models.
Challenge: Library Support Router
Design a routing mechanism for a specialized bot.
You are building a support bot for a library.

Define the logic for a RouterChain that distinguishes between "Book Recommendations" and "Operating Hours."
Step 1
Create two prompt templates: one for book suggestions and one for library schedule info.
Solution:
book_template = """You are a librarian. Recommend books based on: {input}"""
schedule_template = """You are a receptionist. Answer hours queries: {input}"""

prompt_infos = [
    {"name": "books", "description": "Good for recommending books", "prompt_template": book_template},
    {"name": "schedule", "description": "Good for answering operating hours", "prompt_template": schedule_template}
]
Step 2
Define the router_template to guide the LLM on how to classify the user's intent, and initialize the chain.
Solution:
router_template = MULTI_PROMPT_ROUTER_TEMPLATE.format(
    destinations=destinations_str
)
router_prompt = PromptTemplate(
    template=router_template,
    input_variables=["input"],
    output_parser=RouterOutputParser(),
)
router_chain = LLMRouterChain.from_llm(llm, router_prompt)

chain = MultiPromptChain(
    router_chain=router_chain,
    destination_chains=destination_chains,
    default_chain=default_chain,
    verbose=True
)